package com.feihong.txgw.inter.contract.kaika;

import com.feihong.txgw.json.kaika.Menu;
import com.feihong.txgw.json.kaika.PhoneNumList;
import com.feihong.txgw.ui.mvp.model.IBaseModel;
import com.feihong.txgw.ui.mvp.precenter.AbBasePrecenter;
import com.feihong.txgw.ui.mvp.view.IBaseActivity;

import java.util.List;
import java.util.Map;

import io.reactivex.Observable;


/**
 * @Author wangziheng
 * @ProjectName txgw_app
 * @ClassName IKaikaSelectPhoneNumContract
 * @package com.feihong.txgw.inter.contract.kaika
 * @data 2018/5/4 15:16
 * @Describe
 * @Change
 */
public interface IKaikaSelectPhoneNumContract {

    interface IKaikaSelectPhoneNumMainView extends IBaseActivity{
        /**
         * 加载条件菜单返回
         * @param result
         */
        void loadPhoneNumMenuResult(Menu result);

        /**
         * 加载菜单错误返回
         */
        void loadPhoneNumMenuError();

        /**
         * 加载手机号码列表 返回
         * @param phoneNumItems
         */
        void loadPhoneNumListResult (boolean isFullPage,List<PhoneNumList.PhoneNumItem> phoneNumItems);

        /**
         * 加载号码列表错误返回
         */
        void loadPhoneNumListError();

        /**
         * 加载号码完毕
         */
        void loadPhoneNumEnd();

        /**
         * 加载号码列表其他错误
         */
        void loadPhoneNumOhterError();
    }

    interface IKaikaSelectPhoneNumMainModel extends IBaseModel{
        /**
         * 获取筛选手机号的条件菜单
         * @param iccid
         * @return
         */
        Observable<Menu> getPhoneNumMenu(String iccid);
        /** 获取手机号列表
         * @param iccid
         * @param phoneNum  搜索手机号
         * @param pageNum  要请求的页数
         * @param packageID 套餐id
         * @return
         */
        Observable<PhoneNumList> getPhoneNumList(String iccid,String pageNum,String phoneNum,String packageID,Map<String,String>params);
    }

    abstract class AbKakaSelectPhoneNumMainPrecenter extends AbBasePrecenter<IKaikaSelectPhoneNumMainModel,IKaikaSelectPhoneNumMainView>{

        public abstract void loadPhoneNumMenu(String iccid);

        /**
         * 加载手机号码列表
         * @param iccid
         * @param phoneNum
         * @param packageID
         * @param params
         */
        public abstract void loadPhoneNumList(String iccid,String phoneNum,String packageID,Map<String,String> params);

        /**
         * 首次加载
         * @param iccid
         * @param phoneNum
         * @param packageID
         * @param params
         */
        public abstract void loadPhoneNumListFirst(String iccid,String phoneNum,String packageID,Map<String,String> params);
    }
}
